package com.logansoft.zhxypkoa.config;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class GlobalCorsConfig {
	@Bean
	public FilterRegistrationBean<CorsFilter> corsFilter() {
		// 1.添加CORS配置信息
		CorsConfiguration config = new CorsConfiguration();
		// 放行哪些原始域
		config.addAllowedOrigin("*");
		// 是否发送Cookie信息
		config.setAllowCredentials(true);
		// 放行哪些原始域(请求方式)
		config.addAllowedMethod("*");
		// 放行哪些原始域(头部信息)
		config.addAllowedHeader("*");
		// 暴露哪些头部信息（因为跨域访问默认不能获取全部头部信息）
		 config.addExposedHeader("ETag,Date");

		// 2.添加映射路径
		UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
		configSource.registerCorsConfiguration("/**", config);
		FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<CorsFilter>(new CorsFilter(configSource));
        // 这个顺序很重要哦，为避免麻烦请设置在最前
        bean.setOrder(0);
        return bean;

		// 3.返回新的CorsFilter.
//		return new CorsFilter(configSource);
	}

	/*@Bean
	public WebMvcConfigurer corsConfigurer() {
		return new WebMvcConfigurer() {
			@Override
			// 重写父类提供的跨域请求处理的接口
			public void addCorsMappings(CorsRegistry registry) {
				// 添加映射路径
				registry.addMapping("/**")
						// 放行哪些原始域
						.allowedOrigins("*")
						// 是否发送Cookie信息
						.allowCredentials(true)
						// 放行哪些原始域(请求方式)
						// .allowedMethods("GET","POST", "PUT", "DELETE")
						.allowedMethods("*")
						// 放行哪些原始域(头部信息)
						.allowedHeaders("*")
						// 暴露哪些头部信息（因为跨域访问默认不能获取全部头部信息）
						.exposedHeaders("Header1", "Header2");
			}
		};
	}*/
}
